/*
 *  $Id: Names.cs 1177 2010-11-08 11:38:40Z thenn.erannor $
 *  This file is a part of Ragima CCG.
 *  (C) 2008-2009 Ragima development group.
 *
 *  Licensed under the terms of the GNU GPL License version 2.
 *
 */

using System.Collections.Generic;

namespace Ragima.Languages {
    /// <summary>
    /// Набор слов (имен) на нескольких языках.
    /// </summary>
    public sealed class Names : DefaultLocalizable<LocalizedName>, INamed {
        private string _id;
        private bool _animate;

        public Names(string id, bool animate) {
            _id = id;
            _animate = animate;
        }

        /// <summary>
        /// Имя также является именем для самого себя.
        /// </summary>
        public Names Name {
            get { return this; }
        }

        /// <summary>
        /// Идентификатор ресурса имени.
        /// </summary>
        public override string ResourceId {
            get { return _id; }
        }

        /// <summary>
        /// Получает имя по умолчанию. Им является «что-то» или «кто-то» в зависимости от признака одушевленности имени.
        /// </summary>
        public override LocalizedName GetDefaultResource(Language lang) {
            var def = _animate ? BaseResources.DefaultAnimateName : BaseResources.DefaultInanimateName;
            return def != this ? def.GetResource(lang) : null;
        }

        /// <summary>
        /// Выдает имя в строковом виде (в именительном падеже).
        /// </summary>
        public override string ToString() {
            return GetCurrentResource().Nominative;
        }
    }
}
